"""
@Filename:   commons/case_util
@Author:      北凡
@Time:        2023/5/24 20:54
@Describe:    ...
"""
import logging
from pathlib import Path

import jsonpath
import yaml
from commons import settings
from commons.ddt_util import ddt
from commons.models import CaseInfo
from commons.session import BeifanSession
from commons.yaml_util import YamlUtil
from string import Template  # 修改为使用 string.Template



def load_case():
    yaml_path = r'G:\BaiduNetdiskDownload\测试开发平台系列课\资料\测试平台后端\fullstack_framework\commons\test_1_正向用例.yaml'
    case_info_list = []  # 用例内容
    case_name_list = []  # 用例名称

    data = YamlUtil(yaml_path).read()  # 加载yaml内容

    if isinstance(data, dict):  # 如果data是字典，属于普通用例，每个接口属于各自的用例
        if "parametrize" in data:  # 是否使用数据驱动测试
            for data in ddt(data):  # 进行DDT处理 ：一个用例变成多个用例
                # print(data)
                case_data_to_case_list(data, case_info_list, case_name_list)
        else:
            case_data_to_case_list(data, case_info_list, case_name_list)
    #
    # elif isinstance(data, list):
    #     first_case_info = None  # 首个用例，以它 的名词、allure注解，作为整个用例的名称、注解
    #     all_case_info = []  # yaml 所有的用例内容
    #     # data是一个列表 说明此文件是流程用例，多个接口属于同一个用例
    #
    #     for case_info_data in data:
    #         try:
    #             _case_info = CaseInfo(**case_info_data)  # 校验yaml格式
    #
    #             if first_case_info is None:  # 如果没有首个用例，就创建首个用例
    #                 first_case_info = _case_info
    #
    #             all_case_info.append(_case_info)
    #
    #             if "bbs" in str(yaml_path):  # 根据路径，自动标注模块
    #                 _case_info.feature = "论坛模块"
    #             elif "weixin" in str(yaml_path):
    #                 _case_info.feature = "微信模块"
    #
    #         except Exception as e:
    #             raise ValueError(f"{e.args} ({yaml_path})")  # 报错，发出提示
    #
    #     case_info_list.append(all_case_info)  # yaml中所有的内容，作为一个用例
    #     case_name_list.append(first_case_info.test_name)  # 将用例名称放入列表
    #
    #
    return case_info_list, case_name_list


def case_data_to_case_list(data, case_info_list, case_name_list):
    # print(data)
    _case_info = CaseInfo(**data)  # 校验yaml格式
    print(_case_info)
    case_info_list.append([_case_info])  # yaml中所有的内容，作为一个用例

    case_name_list.append(_case_info.test_name)  # 将用例名称放入列表


if __name__ == '__main__':
    # load_case()
    a ,b = load_case()
    # print(a)